<?php
class AdminsController extends AppController
{
	var $name='Admins';
	var $uses=array('Dato','Pago','Sugerencia','User','Cliente','Pedido','Direccione','Producto');
	//var $uses=null;
	var $paginate=array(
		'limit'=>5,
		'page'=>1,
		'order'=>array(
				'Pedido.id'=>'desc'));
	
	function beforeFilter()
	{
		if($this->Session->read('admin')==0)
		{
                    $this->Session->setFlash('&Aacute;rea Restringida');
                    $this->redirect(array('controller'=>'menus','action'=>'index'));
		}
		
		if($this->Session->read('admin')==2)
		{
                    $this->layout = 'medio';
		}
		if($this->Session->read('admin')==1)
		{
                    $this->layout = 'default';
		}
		
		
	}
	function index()
	{
		$fechaDate=date('Y-m-d');
		$pedidosPendientes=$this->Pedido->find('all',array('conditions'=>array('entregado'=>0,'date(created)'=>$fechaDate)));
		$this->set('pedidosPendientes',$pedidosPendientes);
		
		if(!empty($pedidosPendientes))
		{
			
                        $conjuntoPedido[][]=null;
                        $i=0;
			foreach($pedidosPendientes as $pedidoPendiente)
			{
                            $cliente=$this->Cliente->find('first',array('conditions'=>array('user_id'=>$pedidoPendiente['Pedido']['cliente_id'])));
                            $nombreClientes[$i]=$this->User->field('nombre',array('id'=>$cliente['Cliente']['user_id']));
                            $empresa[$i]=$this->Cliente->field('empresa',array('user_id'=>$cliente['Cliente']['user_id']));
                            $piso[$i]=$this->Cliente->field('piso',array('user_id'=>$cliente['Cliente']['user_id']));
                            $oficina[$i]=$this->Cliente->field('oficina',array('user_id'=>$cliente['Cliente']['user_id']));
                            $torre=$this->Direccione->find('first',array('conditions'=>array('id'=>$cliente['Cliente']['direccione_id'])));
                            $nombreTorres[$i]=$this->Direccione->field('torre',array('id'=>$torre['Direccione']['id']));
                            $formasPago[$i]=$this->Pago->field('metodo',array('id'=>$pedidoPendiente['Pedido']['pago_id']));
                            //$this->Pedido->recursive=1;
                            $pedidosDetalles[$i]=$this->Pedido->find('all',array('conditions'=>array('id'=>$pedidoPendiente['Pedido']['id'])));
                            $pedidoDetalle = $pedidosDetalles[$i];
                            //foreach ($pedidosDetalles as $pedidoDetalle){
                               $j=0;
                                while(isset($pedidoDetalle[$j]['Producto'])){
                                    $k=0;
                                    $primerGrupo = $pedidoDetalle[$j]['Producto'][$k]['PedidosProducto']['subgrupo'];
                                    while(isset($pedidoDetalle[$j]['Producto'][$k]['PedidosProducto'])){
                                        $conjuntoPedido[$i][$k]=$pedidoDetalle[$j]['Producto'][$k]['PedidosProducto'];
                                        $k++;
                                    }
                                $j++;
                                }
			$i++;
			}
			$this->set('torres',$nombreTorres);
			$this->set('clientes',$nombreClientes);
			$this->set('empresas',$empresa);
			$this->set('pisos',$piso);
			$this->set('oficinas',$oficina);
			$this->set('formasPago',$formasPago);
                        $this->set('pedidosDetalles',$pedidosDetalles);
                        $this->set('conjuntoPedidos',$conjuntoPedido);
                        $this->set('pedidos',$this->paginate('Pedido'));
		}
	}
	
	function datos(){
            $this->set('datos',$this->Dato->find('all'));
            $this->set('formasPago',$this->Pago->find('all'));
            //$this->set('torres',$this->Direccione->find('all'));
	}


        function generarEtiquetaPedido($id=null){
           //Configure::write('debug',0);
           $this->layout='pdf';
           if($id){
               $pedidoDetalle=$this->Pedido->find(array('id'=>$id));
               $conjuntoPedido[]=null;
               $costosPedidos[]=null;
               if(!empty($pedidoDetalle)){
                    $idCliente = $this->Pedido->field('cliente_id',array('id'=>$id));
                    $cliente = $this->User->find(array('id'=>$idCliente));
                    $idTorre = $cliente['Cliente']['direccione_id'];
                    $nombreTorre = $this->Direccione->field('torre',array('id'=>$idTorre));
                    $k=0;
                    while(isset($pedidoDetalle['Producto'][$k]['PedidosProducto'])){
                        $tipoProducto = $this->Producto->field('tipo_id',array('nombre'=>$pedidoDetalle['Producto'][$k]['PedidosProducto']));
                        if($tipoProducto!= 1){ // verifico que el producto no sea bebida
                            $conjuntoPedido[$k]=$pedidoDetalle['Producto'][$k]['PedidosProducto'];
                            
                            if(!strpos($pedidoDetalle['Producto'][$k]['PedidosProducto']['conjunto'], "/")){ // caso en el cual el item no tenga contornos
                                $costosPedidos[$k] = $this->Producto->field('valor',array('nombre'=>$pedidoDetalle['Producto'][$k]['PedidosProducto']['conjunto']));
                            }else{ // caso en el cual el item tiene contornos
                                //$numeroDeTokens = substr_count($pedidoDetalle['Producto'][$k]['PedidosProducto'], "/");
                                $elementos = explode("/", $pedidoDetalle['Producto'][$k]['PedidosProducto']['conjunto']);
                                $costosPedidos[$k] = $this->Producto->field('valor',array('nombre'=>$elementos[0]));
                            }
                        }
                        $k++;
                    }
               }

               $this->set('cliente',$cliente);
               $this->set('conjuntoPedidos',$conjuntoPedido);
               $this->set('costosPedidos',$costosPedidos);
               $this->set('nombreTorre',$nombreTorre);
               $this->set('tipoDePago',$this->Pago->field('metodo',array('id'=>$pedidoDetalle['Pedido']['pago_id'])));
               $this->render();
           }
        }
        function historicoPedidos(){
            $conjuntoPedido[][]="";
            $pedidos=$this->Pedido->find('all',array('order'=>array('Pedido.id'=>'DESC')));
            //$this->set('pedidos',$this->paginate('Pedido'));
            $this->set('pedidos',$pedidos);
            $i=0;
            foreach ($pedidos as $pedido){
                $cliente[$i] = $this->User->field('nombre',array('id'=>$pedido['Pedido']['cliente_id']));
                $pedidosDetalles[$i]=$this->Pedido->find('all',array('conditions'=>array('id'=>$pedido['Pedido']['id'])));
                $pedidoDetalle = $pedidosDetalles[$i];
                //foreach ($pedidosDetalles as $pedidoDetalle){
                   $j=0;
                    while(isset($pedidoDetalle[$j]['Producto'])){
                        $k=0;
                        $primerGrupo = $pedidoDetalle[$j]['Producto'][$k]['PedidosProducto']['subgrupo'];
                        while(isset($pedidoDetalle[$j]['Producto'][$k]['PedidosProducto'])){
                            $conjuntoPedido[$i][$k]=$pedidoDetalle[$j]['Producto'][$k]['PedidosProducto'];
                            $k++;
                        }
                    $j++;
                    }
                $i++;
            }
            $this->set('conjuntoPedidos',$conjuntoPedido);
            $this->set('clientes',$cliente);
        }
	//ADMIN SECTION
	function admin_index()
	{
		
	}
	function listarAdmin(){
            $administradores=$this->User->find('all',array('conditions'=>array('admin'=>true)));
            $this->set('administradores',$administradores);
	}
	function admin_add()
	{
		if(!empty($this->data))
		{
			$this->User->create();
			$this->User->set($this->data);
			$this->User->Cliente->set($this->data);
			if ($this->User->Cliente->validates())
			{
				if ($this->User->validates()){
					if ($this->User->save($this->data,array('validate'=>'first'))){
						$this->data['Cliente']['user_id']=$this->User->id;
						if ($this->User->Cliente->save($this->data,array('validate'=>'first'))){
							$this->Session->setFlash('Nuevo Administrador ha sido registrado');
							$this->redirect(array('controller'=>'users','action'=>'admin_index'));
						}
						else{
							$this->Session->setFlash('Ha ocurrido un error, intente de nuevo');
						}
					}
					else{
						$this->Session->setFlash('Ha ocurrido un error, intente de nuevo');
					}
				}
				else{
					$errorUser=$this->User->invalidFields();
				}
			}
			else{
				$errorCliente=$this->User->Cliente->invalidFields();
			}
		}
	}
	
	function adminEdit($id=null)
	{
		if(!$id)
		{
			$this->Session->setFlash('Operacion Inválida');
			$this->redirect(array('controller'=>'users','action'=>'admin_listar'));
		}
		if(empty($this->data)){
			$this->data=$this->User->find(array('id'=>$id));
		}
	}
	
	
	function detallePedido($id=null)
	{
		$this->Pedido->recursive=1;
		$pedidosDetalles=$this->Pedido->find('all',array('conditions'=>array('id'=>$id)));
		$productos = $this->Producto->Pedido->find('all', array('conditions' => array('Pedido.id' => $id)));
		
		$this->set('pedidosDetalles',$pedidosDetalles);
		$this->set('productos',$productos);
	}
	
	function updateNombreAdmin()
	{
		if($this->data)
		{
			$this->User->id=$this->data['User']['id'];
			//$this->data['User']['username']=$this->User->username;
			$this->User->saveField('nombre',$this->data['User']['nombre']);
			$this->set('nuevoNombre',$this->data['User']['nombre']);
		}
	}
	
	function exportPedidoInvidual($id=null,$idCliente=null)
	{
		$this->Pedido->recursive=1;
		$this->User->recursive=1;
		$data=$this->Pedido->find('all',array('conditions'=>array('id'=>$id)));
		$this->set('contenidoPedidos',$data);
		$datosCliente=$this->User->find('all',array('conditions'=>array('User.id'=>$idCliente)));
		$this->set('datosCliente',$datosCliente);
		$cliente=$datosCliente[0]['Cliente'];
		$this->set('nombreTorre',$this->Direccione->field('torre',array('id'=>$cliente['direccione_id'])));
		$this->render('export_pedido_individual','export_xls');
	}
	
        function exportPedidoDia(){
            $fechaDate=date('Y-m-d');
		$pedidosPendientes=$this->Pedido->find('all',array('conditions'=>array('entregado'=>0,'date(created)'=>$fechaDate)));
		$this->set('pedidosPendientes',$pedidosPendientes);

		if(!empty($pedidosPendientes))
		{

                        $conjuntoPedido[][]=null;
                        $i=0;
			foreach($pedidosPendientes as $pedidoPendiente)
			{
                            $cliente=$this->Cliente->find('first',array('conditions'=>array('user_id'=>$pedidoPendiente['Pedido']['cliente_id'])));
                            $nombreClientes[$i]=$this->User->field('nombre',array('id'=>$cliente['Cliente']['user_id']));
                            $empresa[$i]=$this->Cliente->field('empresa',array('user_id'=>$cliente['Cliente']['user_id']));
                            $piso[$i]=$this->Cliente->field('piso',array('user_id'=>$cliente['Cliente']['user_id']));
                            $oficina[$i]=$this->Cliente->field('oficina',array('user_id'=>$cliente['Cliente']['user_id']));
                            $torre=$this->Direccione->find('first',array('conditions'=>array('id'=>$cliente['Cliente']['direccione_id'])));
                            $nombreTorres[$i]=$this->Direccione->field('torre',array('id'=>$torre['Direccione']['id']));
                            $formasPago[$i]=$this->Pago->field('metodo',array('id'=>$pedidoPendiente['Pedido']['pago_id']));
                            //$this->Pedido->recursive=1;
                            $pedidosDetalles[$i]=$this->Pedido->find('all',array('conditions'=>array('id'=>$pedidoPendiente['Pedido']['id'])));
                            $pedidoDetalle = $pedidosDetalles[$i];
                            //foreach ($pedidosDetalles as $pedidoDetalle){
                               $j=0;
                                while(isset($pedidoDetalle[$j]['Producto'])){
                                    $k=0;
                                    $primerGrupo = $pedidoDetalle[$j]['Producto'][$k]['PedidosProducto']['subgrupo'];
                                    while(isset($pedidoDetalle[$j]['Producto'][$k]['PedidosProducto'])){
                                        $conjuntoPedido[$i][$k]=$pedidoDetalle[$j]['Producto'][$k]['PedidosProducto'];
                                        $k++;
                                    }
                                $j++;
                                }
			$i++;
			}
			$this->set('torres',$nombreTorres);
			$this->set('clientes',$nombreClientes);
			$this->set('empresas',$empresa);
			$this->set('pisos',$piso);
			$this->set('oficinas',$oficina);
			$this->set('formasPago',$formasPago);
                        $this->set('pedidosDetalles',$pedidosDetalles);
                        $this->set('conjuntoPedidos',$conjuntoPedido);
                        $this->set('pedidos',$this->paginate('Pedido'));

                        $this->render('export_pedido_dia','export_xls');
		}
        }

        function exportPedidoHistorico(){
            $conjuntoPedido[][]="";
            $pedidos=$this->Pedido->find('all',array('order'=>array('Pedido.id'=>'DESC')));
            //$this->set('pedidos',$this->paginate('Pedido'));
            $this->set('pedidos',$pedidos);
            $i=0;
            foreach ($pedidos as $pedido){
                $cliente[$i] = $this->User->field('nombre',array('id'=>$pedido['Pedido']['cliente_id']));
                $pedidosDetalles[$i]=$this->Pedido->find('all',array('conditions'=>array('id'=>$pedido['Pedido']['id'])));
                $pedidoDetalle = $pedidosDetalles[$i];
                //foreach ($pedidosDetalles as $pedidoDetalle){
                   $j=0;
                    while(isset($pedidoDetalle[$j]['Producto'])){
                        $k=0;
                        $primerGrupo = $pedidoDetalle[$j]['Producto'][$k]['PedidosProducto']['subgrupo'];
                        while(isset($pedidoDetalle[$j]['Producto'][$k]['PedidosProducto'])){
                            $conjuntoPedido[$i][$k]=$pedidoDetalle[$j]['Producto'][$k]['PedidosProducto'];
                            $k++;
                        }
                    $j++;
                    }
                $i++;
            }
            $this->set('conjuntoPedidos',$conjuntoPedido);
            $this->set('clientes',$cliente);
            $this->render('export_pedido_historico','export_xls');
        }

	function export_xls() {
		//$this->Dato->recursive = 1;
		$data = $this->Dato->find('all');
		
		$this->set('rows',$data);
		$this->render('export_xls','export_xls');
	}

        function notificaciones(){
            
        }
        function enviarNotificaciones(){
            if(!empty($this->data)){
                $clientes = $this->Cliente->find('all',array('conditions'=>array('recibirmail'=>1)));
                foreach ($clientes as $cliente){
                    $nombre = $this->User->field('nombre',array('id'=>$cliente['Cliente']['user_id']));
                    $correo = $cliente['Cliente']['mail'];
                    $notificacion = $this->data['Dato']['notificacion'];
                    $this->enviarMailNotificacion($nombre,$correo, $notificacion);
                }
                $this->Session->write('text','Notificaciones Enviadas');
            }
        }

        function enviarMailNotificacion($nombreCliente,$mail,$mensaje){
            $this->SwiftMailer->smtpType = $this->tipoSmtp;
            $this->SwiftMailer->smtpHost = $this->hostSmtp;
            $this->SwiftMailer->smtpPort = $this->puertoSmtp;
            $this->SwiftMailer->smtpUsername = $this->usernameSmtp;
            $this->SwiftMailer->smtpPassword = $this->passwordSmtp;
            $this->SwiftMailer->sendAs = $this->enviarComo;
            $this->SwiftMailer->from = $this->remitente;
            $this->SwiftMailer->fromName = 'Información Pronto Deli';
            $this->SwiftMailer->to = $mail;

            $this->set('nombre',$nombreCliente);
            $this->set('mensaje',$mensaje);

            try {
            if(!$this->SwiftMailer->send('notificacion', 'Información Pronto Deli')) {
                $this->log("Error Enviando Email");
		$this->Session->write('envi','Error, correo no enviado, Intente de nuevo');
            }
            }
            catch(Exception $e) {
                  $this->log("Failed to send email: ".$e->getMessage());
            }

        }
}
?>